import http from 'wechat-http'
// 接口基准地址
http.baseURL = 'https://live-api.itheima.net'
// 请求拦截器
http.intercept.request = (options) => {
  // 扩展信息头
  const defaultHeader = {}
  // 添加
  defaultHeader.Authorization = 'Bearer ' + getApp().token
  // 合并对象
  options.header = Object.assign({}, defaultHeader, options.header)
  // 一定要 return options,否则请求出不去
  return options
}
// 响应拦截器
http.intercept.response = async (result) => {
  // console.log(res)
  // res.statusCode 响应状态码
  // res.errMsg 响应信息
  // res.data 响应数据
  const { code, message, data } = result.data
  // code 业务码 message 业务消息 data 数据
  // 业务码 10000 业务正确
  if (code === 10000) {
    return data
  } else {
    if (code === 401) {
      // 验证token过期了
      // 1. 刷新token,更换新的验证token
      const app = getApp()
      wx.request({
        url: http.baseURL + '/refreshToken',
        header: { Authorization: 'Bearer ' + app.refreshToken },
        method: 'post',
        success: (res) => {
          if (res.data.code === 401) {
            app.setToken('token', '')
            app.setToken('refreshToken', '')
            const curPages = getCurrentPages()
            const page = curPages.pop()
            return wx.wx.redirectTo({
              url: 'pages/login/index?redirectUrl=' + page.route,
            })
          }
          if (res.data.code === 10000) {
            app.setToken('token', res.token)
            app.setToken('refreshToken', res.refreshToken)
            const config = Object.assign(result.config, {
              header: { Authorization: 'Bearer ' + res.token },
            })
            return http(config)
          }
        },
        fail: (err) => {
          console.log(err)
        },
      })
    }
    // 业务错误
    wx.utils.toast(message || '业务错误')
    return Promise.reject(message || '业务错误')
  }
}

// 挂载到全局对象
wx.http = http
// 普通的模块导出
export default http
